uses Shellapi;


function GetLongFileName(const sFileName: string): string;
var
  SHFileInfo: TSHFileInfo;
begin
  if SHGetFileInfo(PChar(sFileName),
                   0,
                   SHFileInfo,
                   SizeOf(SHFileInfo),
                   SHGFI_DISPLAYNAME) <> 0 then
    Result := string(SHFileInfo.szDisplayName)
  else
    Result := sFileName;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := GetLongFileName('C:\Program Files\test_l~1.txt');
end;

//The result is test_longfilename.txt